import hashlib

def md5_hash_string(input_string):
    """
    对输入字符串进行MD5哈希。
    """
    # hashlib要求输入是字节串，所以需要encode()
    md5_object = hashlib.md5(input_string.encode('utf-8'))
    return md5_object.hexdigest()

if __name__ == "__main__":
    print("--- MD5 基本哈希 Demo ---")

    message1 = "Hello, world!"
    hash1 = md5_hash_string(message1)
    print(f"原字符串: '{message1}'")
    print(f"MD5哈希:  {hash1}")

    print("\n--- 微小改变，巨大不同（雪崩效应）---")
    # 改变一个字符
    message2 = "Hello, World!" # 'w' 变为 'W'
    hash2 = md5_hash_string(message2)
    print(f"原字符串: '{message2}' # w 变为 W")
    print(f"MD5哈希:  {hash2}")
    print("观察哈希值是否发生巨大变化：", hash1 != hash2)

    # 改变文件内容（这里用字符串模拟）
    message3 = "The quick brown fox jumps over the lazy dog."
    message4 = "The quick brown fox jumps over the lazy cog." # 'd' 变为 'c'
    hash3 = md5_hash_string(message3)
    hash4 = md5_hash_string(message4)
    print(f"\n字符串1: '{message3}'\nMD5: {hash3}")
    print(f"字符串2: '{message4}'\nMD5: {hash4}")
    print("观察哈希值是否发生巨大变化：", hash3 != hash4)